//
//  NetworkTools.swift
//  微博三天
//
//  Created by jessica on 15/11/17.
//  Copyright © 2015年 jessica. All rights reserved.
//

import UIKit
import AFNetworking



private let weiboDomain = "com.baidu.data.error"
//swift 中可以是任意类型
//线上
private let hostName = "https//:api.weibo.com"
//测试
//private let hostName = "https//:api.weibo.com"

enum HTTPMethod : String {


    case POST = "POST"
    case GET  = "GET"

}


class NetworkTools : AFHTTPSessionManager{

    //定义单例
    static let shardTools : NetworkTools =  {
    
    let urlString = "https://api.weibo.com/"
    let url = NSURL(string: urlString)
    let tools = NetworkTools(baseURL: url)
        tools.responseSerializer.acceptableContentTypes?.insert("text/plain")
    
return tools
    }()
    
    
//    定义网络的两种获取方式
    
    //加载数据字典
    func requestJsonDict (method : HTTPMethod ,urlString : String,paraments : [String : AnyObject]?,finished: (result: [String : AnyObject]?,error: NSError?)->()){
    
    
        if method == HTTPMethod.GET {
        
        
        GET(urlString, parameters: paraments, success: { (_, result) -> Void in
            //校验是否为字典
            if let dict = result as?[String : AnyObject]{
            
                        finished(result: dict, error: nil)
            return
            }
            let dataError = NSError(domain: weiboDomain, code: -10000, userInfo: [NSLocalizedDescriptionKey : "错误数据"])
            finished(result: nil, error: dataError)
            
            
            }, failure: { (_, error) -> Void in
                
                finished(result: nil, error: error)
                
                
                
        })
        
        }else{
        
        POST(urlString, parameters: paraments, success: { (_, result) -> Void in
            
            
            //校验数据是否是字典
            if let dict = result as? [String : AnyObject] {
                //执行成功的回调
                finished(result: dict, error: nil)
                return
            }
            
            //数据格式不匹配
            //自定义错误信息
            //一般自定义errorcode  为负值
            let dataError = NSError(domain: weiboDomain, code: -10000, userInfo: [NSLocalizedDescriptionKey : "数据错误"])
            finished(result: nil, error: dataError)
            }) { (_, error) -> Void in
                //执行错误的回调
                finished(result: nil, error: error)
                print(error)
            }
        }
    
    
    }
    //添加上传图片的方法
    func uploadImage(urlString: String,parmaters: [String : AnyObject]?,imageData: NSData,finished: (result: [String : AnyObject]?, error: NSError?) -> ()) {
        
        POST(urlString, parameters: parmaters, constructingBodyWithBlock: { (multipartFormData) -> Void in
            
            //1.data  要上传的文件的二进制数据
            //2.name 表示上传的文件服务器对应的字段
            //3.filename 表示服务器接受后 存储的名字   名字可以随便取
            //4.上传文件的格式  image/jpeg
            multipartFormData.appendPartWithFileData(imageData, name: "pic", fileName: "OMG", mimeType: "image/jpeg")
            }, success: { (_, result) -> Void in
                if let dict = result as? [String : AnyObject] {
                    finished(result: dict, error: nil)
                }
                
            }) { (_, error) -> Void in
                finished(result: nil, error: error)
                print(error)
        }
    }
}

